package com.heng.dao.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.heng.constants.CouponTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

// 优惠券主表实体
@Data
@TableName("t_coupon")
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Coupon implements Serializable {
    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private Long id;                // 优惠券ID
    private String name;            // 优惠券名称
    private Integer type;           // 优惠券类型（1-无门槛 2-满减）
    private BigDecimal amount;      // 优惠金额
    private BigDecimal fullPrice;   // 满减条件（无门槛为0）
    private Integer totalStock;     // 总库存
    private Integer surplusStock;   // 剩余库存
    private LocalDateTime startTime;// 生效时间
    private LocalDateTime endTime;  // 失效时间
    private Integer limitPerUser;   // 每人限领次数
    private Integer status;         // 状态（1-有效 0-失效）
    private LocalDateTime createTime;// 创建时间
    private LocalDateTime updateTime;// 更新时间

    // 逻辑删除（可选）
    @TableLogic
    private Integer isDeleted;

    // 类型转换（数据库code转枚举描述）
    @TableField(exist = false)
    private String typeDesc;        // 优惠券类型描述（非数据库字段）

//    @PostLoad
//    public void setTypeDesc() {
//        this.typeDesc = CouponTypeEnum.getByCode(this.type) != null ?
//                        CouponTypeEnum.getByCode(this.type).getDesc() : "";
//    }
}

